import App from './App'

// #ifndef VUE3
import Vue from 'vue'
import uView from "uview-ui";
Vue.use(uView);
import './uni.promisify.adaptor'
import {wqzApi , gugoApi} from "@/services/index";

Vue.prototype.$wqzApi = wqzApi
Vue.prototype.$gugoApi = gugoApi
 
 Vue.prototype.$image_url = function(str) {
 	//富文本图片处理
 	var image_url  = str.replace(/\\/g , '/')
 	return image_url
 }
Vue.prototype.$filterImg = function(str) {
	//富文本图片处理
	var newser = str.replace(/(<img)/g,
		'<img style="width:100%;height:auto;display:block;margin:10px 0; object-fit: cover;"')
	return newser
}
// 节流函数
Vue.prototype.$throttle = function (func, wait) {
    let timeout; // 定义一个计时器变量，用于限制函数调用频率
    return function (...args) { // 返回一个包装后的函数
        const context = this; // 保存函数执行上下文对象
        if (!timeout) { // 如果计时器不存在
            func.apply(context, args); // 执行函数
            timeout = setTimeout(() => {
                timeout = null; // 清空计时器变量
            }, wait); // 创建计时器，在指定时间后重置计时器变量
        }
    };
}
// 防抖函数
 Vue.prototype.$debounce =function (func, wait, immediate) {
    let timeout; // 定义一个计时器变量，用于延迟执行函数
    return function (...args) { // 返回一个包装后的函数
        const context = this; // 保存函数执行上下文对象
        const later = function () { // 定义延迟执行的函数
            timeout = null; // 清空计时器变量
            if (!immediate) func.apply(context, args); // 若非立即执行，则调用待防抖函数
        };
        const callNow = immediate && !timeout; // 是否立即调用函数的条件
        clearTimeout(timeout); // 清空计时器
        timeout = setTimeout(later, wait); // 创建新的计时器，延迟执行函数
        if (callNow) func.apply(context, args); // 如果满足立即调用条件，则立即执行函数
    };
}
// 小数点后2位
Vue.prototype.$geShi = function(ob) {
  ob = ob.replace(/[^\d.]/g, '') // 清除"数字"和"."以外的字符
  ob = ob.replace(/^\./g, '') // 验证第一个字符是数字而不是.
  ob = ob.replace(/\.{2,}/g, '.') // 只保留第一个. 清除多余的
  ob = ob.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
  ob = ob.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3') // 只能输入两个小数
  if (ob.indexOf('.') < 0 && ob !== '') { // 以上已经过滤，此处控制的是如果没有小数点，首位不能为类似于 01、02的数字
    ob = parseFloat(ob)
  }
  return ob
}

Vue.config.productionTip = false

App.mpType = 'app'
const app = new Vue({
  ...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif